package com.dyz.leetcode._20_dynamicProgramming._718;

public class findLength01 {
    public int findLength(int[] nums1, int[] nums2) {
        // 动态规划
            int m = nums1.length, n = nums2.length;
            // dp[i][j]：表示 A 中前 i 个元素中和 B 的前 j 个元素中最长公共子数组长度
            int[][] dp = new int[m + 1][n + 1];

            int ans = 0;
            for (int i = 1; i <= m; i++) {
                for (int j = 1; j <= n; j++) {
                    if (nums1[i - 1] == nums2[j - 1]) {
                        dp[i][j] = dp[i - 1][j - 1] + 1;
                        ans = Math.max(ans, dp[i][j]);
                    }
                }
            }

            return ans;
        }


}
